<html>

    <head>
        <title>Iris FTP</title>
    </head>

    <body>

        <h1>Iris FTP Client</h1>
        <p>Iris FTP Client is a simple commandline based FTP Client written in Python. The main feature of the client is that it can read script files and thereby automating ftp tasks. Support for basic FTP as well as SFTP is also available.</p> 

        <h2>Source Code</h2>
        <p>The newest version is availbale via svn from http://iris-ftp.googlecode.com/svn/trunk/, and in a browsable fashion at <a href="http://iris-ftp.googlecode.com/svn/trunk/">http://iris-ftp.googlecode.com/svn/trunk/</a>. the latest 'stable' release can be downloaded from <a href="http://golden-ratio.net/iris-ftp/iris-ftp.tgz">http://golden-ratio.net/iris-ftp/iris-ftp.tgz</a>.</p> 
        <p>A package with all required packages is available at <a href="http://golden-ratio.net/iris-ftp/michaelp-irisftp.tgz">http://golden-ratio.net/iris-ftp/michaelp-irisftp.tgz</a>
        </p>
        
        <h2>Documentation</h2>
        <p>The API and documentation is available online at <a href="http://golden-ratio.net/iris-ftp/doc">http://golden-ratio.net/iris-ftp/doc</a> as well as bundled in the release in the ./doc directory.</p> 
        <p>To get the testing scripts to work you have to edit the <a href="http://iris-ftp.googlecode.com/svn/trunk/verify/script">./verify/script</a> file and change the hostname, user and password to valid values.</p>
        <p>Documentation for the script syntax can be found at <a href="http://golden-ratio.net/iris-ftp/doc/script.html">http://golden-ratio.net/iris-ftp/doc/script.html</a>.</p>
        <p><a href="http://iris-ftp.googlecode.com/svn/trunk/doc/report.html">http://iris-ftp.googlecode.com/svn/trunk/doc/report.html</a> contains a brief overview of how the time on the project was spent.</p> 


        <h2>Install</h2>
        <p>Extract or download the iris-ftp directory to your local computer and run the <code>irisftp.py</code> command. Everything should then work as long as the dependcies are met. Even if you don't have intalled Paramiko or Numerical Python the basic ftp functionality will work, only sftp support and testing possibilities won't be available.</p>

        <h2>Basic Usage</h2>
        <p>To start the program you only need to type</p>
        <code>irisftp.py<code>
        <p>Add the <code>-?</code> option to view the possible command line options</p>
        <code>irisftp.py -?<code>
        <p>Starting the program in parser mode is done with the <code>-f</code> option</p>
        <code>irisftp.py -f path/to/scriptfile</code>


        <h2>Dependancies:</h2>
        <ul>
            <li><a href="http://www.lag.net/paramiko/">Paramiko</a> - SFTP support</li>
            <li><a href="http://www.amk.ca/python/code/crypto.html">Pycrypto</a> - used by Paramiko</li>
            <li><a href="http://numpy.scipy.org">Numerical Python</a> - used by fakafiletree.py during the testing</li>
        </ul>

        <h2>Pexpect</h2>    
        <p>A possible choice for implementing both ftp and sftp support would
        have been to use the pexpect package as a wrapper around the *nix ftp
        (or sftp) program. I chose not to do this once I found good Python
        packages that implemented these protocols in a more Pythonesque way. 
        </p>
        <p>Using Pexpect might have made it easier for the end user to get sftp
        running, since sftp is supported on most *nix systems by default and
        many users allready have pexpect installed. I still decided to go for
        the Paramiko route since it was no problem installing, and it's
        interface was closer to the interface of the standard Python ftplib.FTP
        object that I was using for FTP.
        </p>

        <h2>FTP/SSL</h2>    
        <p>A missing part to make this client complete in regard to supporting various FTP servers is support for FTP/SSL. This is currently missing since no server with this capability was found to test it on. The class <code>IrisFTPSSL</code> is bundeled with the current distribution, but isn't included in the progam due to lack of testing.</p>
        <p>The package used to add this support is <a href="http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto">M2Crypto</a>.</p>
    <body>

</html>



